package cn.xx.ai4.config;

import cn.xx.ai4.service.ChatAssistant;
import dev.langchain4j.community.model.dashscope.QwenChatModel;
import dev.langchain4j.community.model.dashscope.WanxImageModel;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.rag.content.retriever.EmbeddingStoreContentRetriever;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.store.embedding.EmbeddingStore;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author admin  2025/3/28 9:14
 */
@RequiredArgsConstructor
@Configuration
public class AssistantConfig {

    /**
     * 创建智能体
     * @param qwenChatModel ：大模型
     */
    @Bean
    public ChatAssistant chatAssistant(QwenChatModel qwenChatModel, EmbeddingStore<TextSegment> embeddingStore){
        return AiServices.builder(ChatAssistant.class)
                //指定对话记忆 - 记忆10次对话 - 基于内存
                //这里的 withMaxMessages(10)指的是最大的消息存储数量，如果没有足够的空间容纳新消息，则最旧的消息将被逐出。
                .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10))
                //指定内容检索器
                .contentRetriever(EmbeddingStoreContentRetriever.from(embeddingStore))
                .chatLanguageModel(qwenChatModel)
                .build();
    }



}
